home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 4 / Macwelt DVD 4.cdr / Entwickler / Mac-OS / oxygen / oxygen.app / Contents / Resources / Java / jh.jar / javax / help / CSH.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-24  |  9.0 KB  |  535 lines

  1. package javax.help;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.EventQueue;
  7. import java.awt.MenuComponent;
  8. import java.awt.MenuContainer;
  9. import java.awt.MenuItem;
  10. import java.awt.Point;
  11. import java.awt.Rectangle;
  12. import java.awt.Toolkit;
  13. import java.awt.event.InputEvent;
  14. import java.awt.event.KeyEvent;
  15. import java.awt.event.MouseEvent;
  16. import java.awt.peer.LightweightPeer;
  17. import java.lang.reflect.InvocationTargetException;
  18. import java.lang.reflect.Method;
  19. import java.util.Hashtable;
  20. import javax.swing.JComponent;
  21. import javax.swing.JLayeredPane;
  22. import javax.swing.JMenu;
  23. import javax.swing.JMenuItem;
  24. import javax.swing.JPopupMenu;
  25. import javax.swing.JRootPane;
  26.  
  27. public class CSH {
  28.    private static Hashtable comps;
  29.    private static final boolean debug = false;
  30.  
  31.    public static void setHelpIDString(Component var0, String var1) {
  32.       if (var0 instanceof JComponent) {
  33.          ((JComponent)var0).putClientProperty("HelpID", var1);
  34.       } else {
  35.          if (comps == null) {
  36.             comps = new Hashtable(5);
  37.          }
  38.  
  39.          Hashtable var2 = (Hashtable)comps.get(var0);
  40.          if (var2 != null) {
  41.             if (var1 != null) {
  42.                var2.put("HelpID", var1);
  43.             } else {
  44.                var2.remove("HelpID");
  45.                if (var2.isEmpty()) {
  46.                   comps.remove(var0);
  47.                }
  48.             }
  49.          } else if (var1 != null) {
  50.             var2 = new Hashtable(2);
  51.             var2.put("HelpID", var1);
  52.             comps.put(var0, var2);
  53.          }
  54.       }
  55.  
  56.    }
  57.  
  58.    public static String getHelpIDString(Component var0) {
  59.       String var1 = null;
  60.       if (var0 instanceof JComponent) {
  61.          var1 = (String)((JComponent)var0).getClientProperty("HelpID");
  62.       } else if (comps != null) {
  63.          Hashtable var2 = (Hashtable)comps.get(var0);
  64.          if (var2 != null) {
  65.             var1 = (String)var2.get("HelpID");
  66.          }
  67.       }
  68.  
  69.       if (var1 != null) {
  70.          return var1;
  71.       } else {
  72.          Container var3 = var0.getParent();
  73.          return var3 != null ? getHelpIDString((Component)var3) : null;
  74.       }
  75.    }
  76.  
  77.    public static void setHelpSet(Component var0, HelpSet var1) {
  78.       if (var0 == null) {
  79.          throw new IllegalArgumentException("Invalid Component");
  80.       } else {
  81.          if (var0 instanceof JComponent) {
  82.             ((JComponent)var0).putClientProperty("HelpSet", var1);
  83.          } else {
  84.             if (comps == null) {
  85.                comps = new Hashtable(5);
  86.             }
  87.  
  88.             Hashtable var2 = (Hashtable)comps.get(var0);
  89.             if (var2 != null) {
  90.                if (var1 != null) {
  91.                   var2.put("HelpSet", var1);
  92.                } else {
  93.                   var2.remove("HelpSet");
  94.                   if (var2.isEmpty()) {
  95.                      comps.remove(var0);
  96.                   }
  97.                }
  98.             } else if (var1 != null) {
  99.                var2 = new Hashtable(2);
  100.                var2.put("HelpSet", var1);
  101.                comps.put(var0, var2);
  102.             }
  103.          }
  104.  
  105.       }
  106.    }
  107.  
  108.    public static HelpSet getHelpSet(Component var0) {
  109.       String var1 = null;
  110.       HelpSet var2 = null;
  111.       if (var0 instanceof JComponent) {
  112.          var1 = (String)((JComponent)var0).getClientProperty("HelpID");
  113.          if (var1 != null) {
  114.             var2 = (HelpSet)((JComponent)var0).getClientProperty("HelpSet");
  115.          }
  116.       } else if (comps != null) {
  117.          Hashtable var3 = (Hashtable)comps.get(var0);
  118.          if (var3 != null) {
  119.             var1 = (String)var3.get("HelpID");
  120.             if (var1 != null) {
  121.                var2 = (HelpSet)var3.get("HelpSet");
  122.             }
  123.          }
  124.       }
  125.  
  126.       if (var1 != null) {
  127.          return var2;
  128.       } else {
  129.          Container var4 = var0.getParent();
  130.          return var4 != null ? getHelpSet((Component)var4) : null;
  131.       }
  132.    }
  133.  
  134.    public static void setHelpIDString(MenuItem var0, String var1) {
  135.       if (comps == null) {
  136.          comps = new Hashtable(5);
  137.       }
  138.  
  139.       Hashtable var2 = (Hashtable)comps.get(var0);
  140.       if (var2 != null) {
  141.          if (var1 != null) {
  142.             var2.put("HelpID", var1);
  143.          } else {
  144.             var2.remove("HelpID");
  145.             if (var2.isEmpty()) {
  146.                comps.remove(var0);
  147.             }
  148.          }
  149.       } else if (var1 != null) {
  150.          var2 = new Hashtable(2);
  151.          var2.put("HelpID", var1);
  152.          comps.put(var0, var2);
  153.       }
  154.  
  155.    }
  156.  
  157.    public static String getHelpIDString(MenuItem var0) {
  158.       String var1 = null;
  159.       if (comps != null) {
  160.          Hashtable var2 = (Hashtable)comps.get(var0);
  161.          if (var2 != null) {
  162.             var1 = (String)var2.get("HelpID");
  163.          }
  164.       }
  165.  
  166.       if (var1 != null) {
  167.          return var1;
  168.       } else {
  169.          MenuContainer var3 = var0.getParent();
  170.          return var3 != null && var3 instanceof MenuItem ? getHelpIDString((MenuItem)var3) : null;
  171.       }
  172.    }
  173.  
  174.    public static void setHelpSet(MenuItem var0, HelpSet var1) {
  175.       if (comps == null) {
  176.          comps = new Hashtable(5);
  177.       }
  178.  
  179.       Hashtable var2 = (Hashtable)comps.get(var0);
  180.       if (var2 != null) {
  181.          if (var1 != null) {
  182.             var2.put("HelpSet", var1);
  183.          } else {
  184.             var2.remove("HelpSet");
  185.             if (var2.isEmpty()) {
  186.                comps.remove(var0);
  187.             }
  188.          }
  189.       } else if (var1 != null) {
  190.          var2 = new Hashtable(2);
  191.          var2.put("HelpSet", var1);
  192.          comps.put(var0, var2);
  193.       }
  194.  
  195.    }
  196.  
  197.    public static HelpSet getHelpSet(MenuItem var0) {
  198.       String var1 = null;
  199.       HelpSet var2 = null;
  200.       if (comps != null) {
  201.          Hashtable var3 = (Hashtable)comps.get(var0);
  202.          if (var3 != null) {
  203.             var1 = (String)var3.get("HelpID");
  204.             if (var1 != null) {
  205.                var2 = (HelpSet)var3.get("HelpSet");
  206.             }
  207.          }
  208.       }
  209.  
  210.       if (var1 != null) {
  211.          return var2;
  212.       } else {
  213.          MenuContainer var4 = var0.getParent();
  214.          return var4 != null && var4 instanceof MenuItem ? getHelpSet((MenuItem)var4) : null;
  215.       }
  216.    }
  217.  
  218.    public static Object trackCSEvents() {
  219.       int var0 = -1;
  220.  
  221.       try {
  222.          if (Thread.currentThread().getClass().getName().endsWith("EventDispatchThread")) {
  223.             EventQueue var1 = null;
  224.  
  225.             try {
  226.                var1 = Toolkit.getDefaultToolkit().getSystemEventQueue();
  227.             } catch (Exception var9) {
  228.                debug(var9);
  229.             }
  230.  
  231.             if (var1 == null) {
  232.                return null;
  233.             }
  234.  
  235.             while(true) {
  236.                AWTEvent var2;
  237.                Object var3;
  238.                while(true) {
  239.                   ++var0;
  240.                   var2 = var1.getNextEvent();
  241.                   var3 = var2.getSource();
  242.  
  243.                   try {
  244.                      Class var4 = Class.forName("java.awt.ActiveEvent");
  245.                      if (var4 == null || !var4.isInstance(var2)) {
  246.                         break;
  247.                      }
  248.  
  249.                      Object var5 = null;
  250.                      Class[] var6 = new Class[0];
  251.                      Object[] var7 = new Object[0];
  252.                      Method var20 = var4.getMethod("dispatch", var6);
  253.                      if (var20 == null) {
  254.                         break;
  255.                      }
  256.  
  257.                      var20.invoke(var2, var7);
  258.                   } catch (NoSuchMethodError var10) {
  259.                      break;
  260.                   } catch (ClassNotFoundException var11) {
  261.                      break;
  262.                   } catch (IllegalAccessException var12) {
  263.                      break;
  264.                   } catch (InvocationTargetException var13) {
  265.                      break;
  266.                   } catch (NoSuchMethodException var14) {
  267.                      break;
  268.                   }
  269.                }
  270.  
  271.                if (var3 instanceof Component) {
  272.                   if (var2 instanceof InputEvent) {
  273.                      if (var2 instanceof KeyEvent) {
  274.                         KeyEvent var19 = (KeyEvent)var2;
  275.                         if (var19.getKeyCode() == 3) {
  276.                            var19.consume();
  277.                            return null;
  278.                         }
  279.  
  280.                         dispatchEvent(var3, var2);
  281.                      } else if (var2 instanceof MouseEvent) {
  282.                         MouseEvent var18 = (MouseEvent)var2;
  283.                         int var22 = var18.getID();
  284.                         if (var22 != 500 && var22 != 501 && var22 != 502) {
  285.                            var18.consume();
  286.                         } else if (var22 == 500) {
  287.                            if (var0 != 0) {
  288.                               var18.consume();
  289.                               return getDeepestObjectAt(var3, var18.getX(), var18.getY());
  290.                            }
  291.  
  292.                            dispatchEvent(var3, var2);
  293.                         } else {
  294.                            var18.consume();
  295.                         }
  296.                      } else {
  297.                         dispatchEvent(var3, var2);
  298.                      }
  299.                   } else {
  300.                      dispatchEvent(var3, var2);
  301.                   }
  302.                } else if (var3 instanceof MenuComponent) {
  303.                   if (var3 instanceof MenuItem) {
  304.                      if (var2 instanceof InputEvent) {
  305.                         if (var2 instanceof KeyEvent) {
  306.                            KeyEvent var17 = (KeyEvent)var2;
  307.                            if (var17.getKeyCode() == 3) {
  308.                               var17.consume();
  309.                               return null;
  310.                            }
  311.  
  312.                            dispatchEvent(var3, var2);
  313.                         } else if (var2 instanceof MouseEvent) {
  314.                            MouseEvent var16 = (MouseEvent)var2;
  315.                            int var21 = var16.getID();
  316.                            if (var21 != 500 && var21 != 501 && var21 != 502) {
  317.                               var16.consume();
  318.                            } else if (var21 == 500) {
  319.                               if (var0 != 0) {
  320.                                  var16.consume();
  321.                                  return getDeepestObjectAt(var3, var16.getX(), var16.getY());
  322.                               }
  323.  
  324.                               dispatchEvent(var3, var2);
  325.                            } else {
  326.                               var16.consume();
  327.                            }
  328.                         } else {
  329.                            dispatchEvent(var3, var2);
  330.                         }
  331.                      }
  332.                   } else {
  333.                      dispatchEvent(var3, var2);
  334.                   }
  335.                } else {
  336.                   System.err.println("unable to dispatch event: " + var2);
  337.                }
  338.             }
  339.          }
  340.       } catch (InterruptedException var15) {
  341.          debug("InterrupedExeception");
  342.       }
  343.  
  344.       debug("Fall Through code");
  345.       return null;
  346.    }
  347.  
  348.    private static void dispatchEvent(Object var0, AWTEvent var1) {
  349.       if (var0 instanceof Component) {
  350.          ((Component)var0).dispatchEvent(var1);
  351.       } else if (var0 instanceof MenuComponent) {
  352.          ((MenuComponent)var0).dispatchEvent(var1);
  353.       }
  354.  
  355.    }
  356.  
  357.    private static Object getDeepestObjectAt(Object var0, int var1, int var2) {
  358.       if (var0 != null && var0 instanceof Container) {
  359.          Component var3 = findComponentAt((Container)var0, var1, var2);
  360.          if (var3 != null && var3 != var0) {
  361.             if (!(var3 instanceof JRootPane)) {
  362.                return var3;
  363.             }
  364.  
  365.             JLayeredPane var4 = ((JRootPane)var3).getLayeredPane();
  366.             Rectangle var5 = var4.getBounds();
  367.             var3 = (Component)getDeepestObjectAt(var4, var1 - var5.x, var2 - var5.y);
  368.             if (var3 != null) {
  369.                return var3;
  370.             }
  371.          }
  372.       }
  373.  
  374.       return var0;
  375.    }
  376.  
  377.    private static Component findComponentAt(Container var0, int var1, int var2) {
  378.       Object var3 = var0.getTreeLock();
  379.       synchronized(var3) {
  380.          Component var4 = findComponentAt(var0, var1, var2, true, false);
  381.          return var4;
  382.       }
  383.    }
  384.  
  385.    private static Component findComponentAt(Container var0, int var1, int var2, boolean var3, boolean var4) {
  386.       if (var0.contains(var1, var2) && var0.isVisible() && (var3 || var0.isEnabled())) {
  387.          int var5 = var0.getComponentCount();
  388.          Component[] var6 = var0.getComponents();
  389.          Component var7 = null;
  390.          if (var4 && var0 instanceof JRootPane) {
  391.             var7 = ((JRootPane)var0).getGlassPane();
  392.          }
  393.  
  394.          for(int var8 = 0; var8 < var5; ++var8) {
  395.             Component var9 = var6[var8];
  396.             if (var9 != null && var9 != var7 && !(var9.getPeer() instanceof LightweightPeer)) {
  397.                Point var10 = var9.getLocation();
  398.                if (var9 instanceof Container) {
  399.                   var9 = findComponentAt((Container)var9, var1 - var10.x, var2 - var10.y, var3, var4);
  400.                } else {
  401.                   var9 = var9.locate(var1 - var10.x, var2 - var10.y);
  402.                }
  403.  
  404.                if (var9 != null && var9.isVisible() && (var3 || var9.isEnabled())) {
  405.                   return var9;
  406.                }
  407.             }
  408.          }
  409.  
  410.          for(int var13 = 0; var13 < var5; ++var13) {
  411.             Component var14 = var6[var13];
  412.             if (var14 != null && var14 != var7 && var14.getPeer() instanceof LightweightPeer) {
  413.                Point var11 = var14.getLocation();
  414.                if (var14 instanceof Container) {
  415.                   var14 = findComponentAt((Container)var14, var1 - var11.x, var2 - var11.y, var3, var4);
  416.                } else {
  417.                   var14 = var14.locate(var1 - var11.x, var2 - var11.y);
  418.                }
  419.  
  420.                if (var14 != null && var14.isVisible() && (var3 || var14.isEnabled())) {
  421.                   return var14;
  422.                }
  423.             }
  424.          }
  425.  
  426.          return var0;
  427.       } else {
  428.          return null;
  429.       }
  430.    }
  431.  
  432.    private static JMenuItem findArmedMenuItem(JMenu var0) {
  433.       if (var0 == null) {
  434.          return null;
  435.       } else {
  436.          Object var1 = var0.getTreeLock();
  437.          synchronized(var1) {
  438.             if (!var0.isArmed()) {
  439.                Object var8 = null;
  440.                return (JMenuItem)var8;
  441.             } else {
  442.                int var2 = 0;
  443.  
  444.                for(int var3 = var0.getMenuComponentCount(); var2 < var3; ++var2) {
  445.                   Object var4 = var0.getMenuComponent(var2);
  446.                   if (var4 instanceof JMenuItem && ((JMenuItem)var4).isArmed()) {
  447.                      if (var4 instanceof JMenu) {
  448.                         var4 = findArmedMenuItem((JMenu)var4);
  449.                      }
  450.  
  451.                      JMenuItem var5 = (JMenuItem)var4;
  452.                      return var5;
  453.                   }
  454.                }
  455.  
  456.                return var0;
  457.             }
  458.          }
  459.       }
  460.    }
  461.  
  462.    private static Component findArmedComponent(JPopupMenu var0) {
  463.       if (var0 == null) {
  464.          return null;
  465.       } else {
  466.          Object var1 = var0.getTreeLock();
  467.          synchronized(var1) {
  468.             if (!var0.isVisible()) {
  469.                Object var8 = null;
  470.                return (Component)var8;
  471.             } else {
  472.                int var2 = 0;
  473.  
  474.                for(int var3 = var0.getComponentCount(); var2 < var3; ++var2) {
  475.                   Object var4 = var0.getComponent(var2);
  476.                   if (var4 instanceof JMenuItem && ((JMenuItem)var4).isArmed()) {
  477.                      if (var4 instanceof JMenu) {
  478.                         var4 = findArmedMenuItem((JMenu)var4);
  479.                      }
  480.  
  481.                      return (Component)var4;
  482.                   }
  483.                }
  484.  
  485.                Component var9 = var0.getInvoker();
  486.                return var9;
  487.             }
  488.          }
  489.       }
  490.    }
  491.  
  492.    private static Component findFocusOwner(Component var0) {
  493.       Object var1 = ((Component)var0).getTreeLock();
  494.       synchronized(var1) {
  495.          if (var0 instanceof JPopupMenu) {
  496.             Component var9 = findArmedComponent((JPopupMenu)var0);
  497.             return var9;
  498.          } else if (var0 instanceof JComponent && ((JComponent)var0).hasFocus()) {
  499.             if (var0 instanceof JMenu) {
  500.                var0 = findArmedMenuItem((JMenu)var0);
  501.             }
  502.  
  503.             return (Component)var0;
  504.          } else {
  505.             if (var0 instanceof Container) {
  506.                int var2 = 0;
  507.  
  508.                for(int var3 = ((Container)var0).getComponentCount(); var2 < var3; ++var2) {
  509.                   Component var4 = findFocusOwner(((Container)var0).getComponent(var2));
  510.                   if (var4 != null) {
  511.                      return var4;
  512.                   }
  513.                }
  514.             }
  515.  
  516.             Object var8 = null;
  517.             return (Component)var8;
  518.          }
  519.       }
  520.    }
  521.  
  522.    private static void debug(Object var0) {
  523.    }
  524.  
  525.    // $FF: synthetic method
  526.    static Component access$000(Component var0) {
  527.       return findFocusOwner(var0);
  528.    }
  529.  
  530.    // $FF: synthetic method
  531.    static void access$100(Object var0) {
  532.       debug(var0);
  533.    }
  534. }
  535.